Over the years, there have been significant advances in disk technology and Random Access Memory (RAM) technology. For example, these technologies include Phase change Memory, sRAM, Magnetoresistive Random Access Memory (MRAM), Solid State Drive (SSD), Racetrack memory, etc. These technologies (memory and storage technologies) are better at some properties than traditional technologies, but they still cannot completely replace such traditional and existing technologies. Because of all of these different technologies, all the disk and RAM technologies have to co-exist in the same architecture or system, which leads to a hybrid structure.
Programmers dynamically allocate memory in RAM, using function calls like malloc or calloc in a C++ implementation. By way of explanation, in these dynamic allocations, all dynamically allocated data are stored in a heap, e.g.,                char heap[heap_size];        int end_of_heap=0;        
A trivial implementation of malloc in C++ is:
void* malloc ( int size ) {void* loc = (void*) &heap[end_of_heap];end_of_heap += size;return loc;};.
However, such dynamic allocation call always allocates memory from the same RAM technology. This hinders an effective use of hybrid infrastructure to improve performance and reduce power usage and leakage.
Also, the new evolving disk technologies like Racetrack memory and Storage Class Memory are speculated to replace Solid State Disks. Now, in the light of so much research and advances in the disk and RAM technologies, a complete restructuring of the backend storage or RAM chips to replace the older technology disks or chips with newer technology is neither economical nor is practically feasible. Thus, the result is a hybrid structure formed in which all the different disk and RAM technologies co-exist. This poses many issues, which does not account for properly leveraging all the various available disks and RAM technologies.